package vaccine.appointment.system.vaccine.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import vaccine.appointment.system.vaccine.dataobject.Vaccine;
import vaccine.appointment.system.vaccine.vo.AddVaccineRequest;
import vaccine.appointment.system.vaccine.vo.UpdateVaccineRequest;
import vaccine.appointment.system.vaccine.vo.VaccineListVO;

/**
 * 疫苗服务接口
 */
public interface VaccineService {

    Boolean insert(Vaccine vaccine);

    Boolean delete(Integer id);

    Vaccine selectById(Integer id);

    Boolean update(Vaccine vaccine);

    /**
     * 查询疫苗列表
     * @param type 疫苗类型（可选）
     * @param pageNum 页码
     * @param pageSize 每页大小
     * @return 分页数据
     */
    Page<VaccineListVO> getVaccineList(Integer type, Integer pageNum, Integer pageSize);

    /**
     * 添加疫苗（管理员功能）
     * @param request 添加疫苗请求
     * @return 是否成功
     */
    Boolean addVaccine(AddVaccineRequest request);

    /**
     * 更新疫苗（管理员功能）
     * @param vaccineId 疫苗ID
     * @param request 更新疫苗请求
     * @return 是否成功
     */
    Boolean updateVaccine(Integer vaccineId, UpdateVaccineRequest request);

    /**
     * 删除疫苗（管理员功能）
     * @param vaccineId 疫苗ID
     * @return 是否成功
     */
    Boolean deleteVaccine(Integer vaccineId);

    /**
     * 查询所有疫苗列表（管理员功能，包含已过期的）
     * @param type 疫苗类型（可选）
     * @param pageNum 页码
     * @param pageSize 每页大小
     * @return 分页数据
     */
    Page<VaccineListVO> getAllVaccineList(Integer type, Integer pageNum, Integer pageSize);
}
